package com.eduagent.xwqeduagent.api.PictureDoodlePainting.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 线稿生图请求模型类
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CreateDoodlePaintingTaskRequest implements Serializable {

    /**
     * 模型名称
     */
    private String model = "wanx-sketch-to-image-lite";

    /**
     * 输入参数
     */
    private Input input;

    /**
     * 处理参数
     */
    private Parameters parameters;

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Input implements Serializable {
        /**
         * 提示词
         */
        @JsonProperty("prompt")
        private String prompt;

        /**
         * 输入草图URL地址
         */
        @JsonProperty("sketch_image_url")
        private String sketchImageUrl;
    }

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Parameters implements Serializable {
        /**
         * 输出图像风格
         * <auto>：默认值，由模型随机输出图像风格
         * <3d cartoon>：3D卡通
         * <anime>：二次元
         * <oil painting>：油画
         * <watercolor>：水彩
         * <sketch>：素描
         * <chinese painting>：中国画
         * <flat illustration>：扁平插画
         */
        private String style;

        /**
         * 输出图像分辨率，目前仅支持768*768，且为默认值
         */
        private String size = "768*768";

        /**
         * 生成图片数量，取值范围1~4，默认为4
         */
        private Integer n = 4;

        /**
         * 输入草图对输出图像的约束程度
         * 取值范围0-10，默认10，值越大输出图像越接近输入草图
         */
        @JsonProperty("sketch_weight")
        private Integer sketchWeight = 10;

        /**
         * 是否对输入RGB图片进行sketch边缘提取
         * 默认值为false，表示不提取
         */
        @JsonProperty("sketch_extraction")
        private Boolean sketchExtraction;

        /**
         * 画笔颜色，当sketch_extraction=false时生效
         * 包含的数值均被视为画笔色，其余数值视为背景色
         * 示例值：[[134, 134, 134], [0, 0, 0]]
         */
        @JsonProperty("sketch_color")
        private List<List<Integer>> sketchColor;
    }
} 